package com.run2code.design.creational.singleton;

/**
 * 单例模式 - 内部类实现
 * 关注公众号【奔跑的码畜】，一起进步不迷路
 *
 * @author 第七人格
 * @date 2023/11/14
 */
public class Singleton_04 {

    /**
     * 实现要点①：创建一个静态内部类，该类中有一个静态属性，且为私有的
     * 关注公众号【奔跑的码畜】，一起进步不迷路
     *
     * @author 第七人格
     * @date 2023/11/14
     */
    private static class SingletonInternalClass {
        private static Singleton_04 INSTANCE = new Singleton_04();
    }

    /**
     * 实现要点②：私有化构造函数，防止被外部实例化
     */
    private Singleton_04() {
    }

    /**
     * 实现要点③：对外提供获取实例的静态方法
     *
     * @return {@link Singleton_03}
     */
    public static Singleton_04 getInstance() {
        return SingletonInternalClass.INSTANCE;
    }

}
